home *** CD-ROM | disk | FTP | other *** search
- /*
- * Glue routines to call the MacTCP drivers
- *
- * Summer 1989, Tom Milligan, University of Toronto Computing Services
- */
-
-
- #include <MacTCPCommonTypes.h>
- #include <GetMyIPAddr.h>
- #include <TCPPB.h>
- #include <UDPPB.h>
- #include <AddressXlation.h>
-
- #define xOpenDriver(driver,bad) \
- { \
- char ipdriver[6]; \
- if (driver == 0) \
- { \
- ParamBlockRec pb; \
- OSErr io; \
- pb.ioParam.ioCompletion = 0L; \
- ipdriver[0] = 4; \
- ipdriver[1] = '.'; \
- ipdriver[2] = 'i'; \
- ipdriver[3] = 'p'; \
- ipdriver[4] = 'p'; \
- ipdriver[5] = 0; \
- pb.ioParam.ioNamePtr = ipdriver; \
- pb.ioParam.ioPermssn = fsCurPerm; \
- io = PBOpen(&pb,false); \
- if (io != noErr) \
- return(bad); \
- driver = pb.ioParam.ioRefNum; \
- } \
- }
-
- #if GLUE_DEBUG > 0
- #define xPBControl(pb,completion) \
- { \
- OSErr io; \
- if (completion == 0L) \
- { \
- (pb)->ioCompletion = 0L; \
- dprintf("about to PBControl(%d,sync)\n",pb->csCode); \
- io = PBControl((ParmBlkPtr)(pb),false); \
- } \
- else if (completion == (TCPIOCompletionProc)-1L) \
- { \
- (pb)->ioCompletion = 0L; \
- dprintf("about to PBControl(%d,async) no completion routine\n",pb->csCode); \
- io = PBControl((ParmBlkPtr)(pb),true); \
- } \
- else \
- { \
- (pb)->ioCompletion = completion; \
- dprintf("about to PBControl(%d,async) completion routine %08x\n",pb->csCode,(pb)->ioCompletion); \
- io = PBControl((ParmBlkPtr)(pb),true); \
- } \
- dprintf("PBControl done code %d\n",io); \
- return(io); \
- }
- #define xPBControlSync(pb,io) \
- { \
- (pb)->ioCompletion = 0L; \
- dprintf("about to PBControl(%d,sync)\n",pb->csCode); \
- io = PBControl((ParmBlkPtr)(pb),false); \
- dprintf("PBControl done code %d\n",io); \
- }
-
- #else
-
- #define xPBControl(pb,completion) \
- { \
- if (completion == 0L) \
- { \
- (pb)->ioCompletion = 0L; \
- return(PBControl((ParmBlkPtr)(pb),false)); \
- } \
- else if (completion == (TCPIOCompletionProc)-1L) \
- { \
- (pb)->ioCompletion = 0L; \
- return(PBControl((ParmBlkPtr)(pb),true)); \
- } \
- else \
- { \
- (pb)->ioCompletion = completion; \
- return(PBControl((ParmBlkPtr)(pb),true)); \
- } \
- }
- #define xPBControlSync(pb,io) \
- { \
- (pb)->ioCompletion = 0L; \
- io = PBControl((ParmBlkPtr)(pb),false); \
- }
-
- #endif GLUE_DEBUG
-
- #define TCPStateClosed 0
- #define TCPStateListen 2
- #define TCPStateSynReceived 4
- #define TCPStateSynSent 6
- #define TCPStateEstablished 8
- #define TCPStateFinWait1 10
- #define TCPStateFinWait2 12
- #define TCPStateCloseWait 14
- #define TCPStateClosing 16
- #define TCPStateLastAck 18
- #define TCPStateTimeWait 20
-
- OSErr xTCPCreate(
- int buflen,
- TCPNotifyProc notify,
- TCPiopb *pb);
-
- OSErr xTCPPassiveOpen(
- TCPiopb *pb,
- short port,
- TCPIOCompletionProc completion);
-
- OSErr xTCPActiveOpen(
- TCPiopb *pb,
- short port,
- long rhost,
- short rport,
- TCPIOCompletionProc completion);
-
- OSErr xTCPRcv(
- TCPiopb *pb,
- Ptr buf,
- int buflen,
- TCPIOCompletionProc completion);
-
- OSErr xTCPSend(
- TCPiopb *pb,
- wdsEntry *wds,
- Boolean push,
- Boolean urgent,
- TCPIOCompletionProc completion);
-
- OSErr xTCPRelease(TCPiopb *pb);
-
- int xTCPBytesUnread( TCPiopb *pb);
-
- void xTCPInfo(TCPiopb *pb);
-
- ip_addr xIPAddr();
-
- long xNetMask();
-
- unsigned short xMaxMTU();
-
-